﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace StyleMVVM.Validation
{
	public interface IValidationMethodCollection<T>
	{
		IValidationMethodDefinition<T> AddRule(Action<IRuleExecutionContext<T>> validationMethod);

		IValidationMethodDefinition<T> AddAsyncRule(Func<IRuleExecutionContext<T>, Task> validationMethod);

		void ValidateProperty(Expression<Func<T, object>> property);
	}
}